home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / basic / ubas830.zip / ECM2.ASM < prev    next >
Assembly Source File  |  1988-09-27  |  2KB  |  147 lines

  1. ;ECM2
  2. ;Sep 1988 by Yuji KIDA
  3.  
  4.  
  5.     INCLUDE    UB.MAC
  6.  
  7. ;N ,M# ,V0(),V1(),V2(),V3(),W1,W2,W3,W4
  8. ;v1,v2 ,v3  ,v4  ,v5  ,v6  ,v7,v8,v9,v10
  9.  
  10. ;    reserve address of array 
  11.  
  12.     MOV    AX,CS
  13.     MOV    DS,AX
  14.  
  15.     MOV    SI,v3
  16.     MOV    AX,[SI]
  17.     MOV    [MEM1],AX
  18.  
  19.     MOV    SI,v4
  20.     MOV    AX,[SI]
  21.     MOV    [MEM2],AX
  22.  
  23.     MOV    SI,v5
  24.     MOV    AX,[SI]
  25.     MOV    [MEM3],AX
  26.  
  27.     MOV    SI,v6
  28.     MOV    AX,[SI]
  29.     MOV    [MEM4],AX
  30.  
  31.     JMP    SHORT L10
  32.  
  33.     EVEN
  34. MEM1    DW    ?
  35. MEM2    DW    ?
  36. MEM3    DW    ?
  37. MEM4    DW    ?
  38. J_COUNT    DW    ?
  39.  
  40.  
  41. L10:
  42.  
  43. ;    10 v2=(v10-v6(0)*v9+v5(0)*v8-v4(0)*v7+v3(0))@v1
  44.  
  45.     @PUSH    v10
  46.     @PUSH    v6
  47.     @PUSH    v9
  48.     @MUL
  49.     @SUB
  50.     @PUSH    v5
  51.     @PUSH    v8
  52.     @MUL
  53.     @ADD
  54.     @PUSH    v4
  55.     @PUSH    v7
  56.     @MUL
  57.     @SUB
  58.     @PUSH    v3
  59.     @ADD
  60.     @PUSH    v1
  61.     @MOD
  62.  
  63.     ;do not POP
  64.  
  65. ;    20 for J%=1 to 11
  66.  
  67.     MOV    CS:[J_COUNT],11
  68.  
  69. L20:
  70.     ;go ahed POINTERs
  71.  
  72.     MOV    AX,CS
  73.     MOV    DS,AX
  74.     MOV    SI,LSIZE
  75.     MOV    AX,[SI]
  76.     MOV    SI,v3
  77.     ADD    [SI],AX
  78.     MOV    SI,v4
  79.     ADD    [SI],AX
  80.     MOV    SI,v5
  81.     ADD    [SI],AX
  82.     MOV    SI,v6
  83.     ADD    [SI],AX
  84.  
  85. ;    30 v2=v2*((v10-v6(J%)*v9+v5(J%)*v8-v4(J%)*v7+v3(J%))@v1)@v1
  86. ;       v2 is already in STACK
  87.  
  88.     @PUSH    v10
  89.     @PUSH    v6
  90.     @PUSH    v9
  91.     @MUL
  92.     @SUB
  93.     @PUSH    v5
  94.     @PUSH    v8
  95.     @MUL
  96.     @ADD
  97.     @PUSH    v4
  98.     @PUSH    v7
  99.     @MUL
  100.     @SUB
  101.     @PUSH    v3
  102.     @ADD
  103.     @PUSH    v1
  104.     @MOD
  105.  
  106.     @MUL        ;with v2
  107.     @PUSH    v1
  108.     @MOD
  109.  
  110.     ;do not POP
  111.  
  112. ;    40 next 
  113.  
  114.     DEC    CS:[J_COUNT]
  115.     JZ    L50
  116.     JMP    L20
  117.  
  118. L50:
  119.     ;finally pop v2
  120.  
  121.     @POP    v2
  122.  
  123.     ;restore POINTERs of array
  124.  
  125.     MOV    AX,CS
  126.     MOV    DS,AX
  127.  
  128.     MOV    AX,[MEM1]
  129.     MOV    SI,v3
  130.     MOV    [SI],AX
  131.  
  132.     MOV    AX,[MEM2]
  133.     MOV    SI,v4
  134.     MOV    [SI],AX
  135.  
  136.     MOV    AX,[MEM3]
  137.     MOV    SI,v5
  138.     MOV    [SI],AX
  139.  
  140.     MOV    AX,[MEM4]
  141.     MOV    SI,v6
  142.     MOV    [SI],AX
  143.  
  144. ;    60 return
  145.  
  146.     RETURN
  147.